package com.starhub.engine.milvus.biz;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import com.starhub.application.rag.biz.MilvusClientFactory;

/**
 * Milvus连接清理定时任务
 * 定期清理空闲的Milvus连接，防止连接泄漏
 * 
 * @version: V1.0
 * @author: liuhf
 */
@Slf4j
@Component
public class MilvusConnectionCleanupTask {

    @Autowired
    private MilvusClientFactory milvusClientFactory;

    /**
     * 每5分钟执行一次连接清理任务
     */
    @Scheduled(fixedRate = 5 * 60 * 1000) // 5分钟
    public void cleanupIdleConnections() {
        try {
            log.debug("开始执行Milvus连接清理任务...");
            milvusClientFactory.cleanupIdleClients();
            log.debug("Milvus连接清理任务执行完成");
        } catch (Exception e) {
            log.error("执行Milvus连接清理任务时发生异常", e);
        }
    }

    /**
     * 每小时执行一次连接健康检查
     */
    @Scheduled(fixedRate = 60 * 60 * 1000) // 1小时
    public void healthCheck() {
        try {
            log.debug("开始执行Milvus连接健康检查...");
            // 这里可以添加更详细的健康检查逻辑
            log.debug("Milvus连接健康检查执行完成");
        } catch (Exception e) {
            log.error("执行Milvus连接健康检查时发生异常", e);
        }
    }
} 